﻿#region 참조 네임스페이스

using Skying.Net.NetworkInformation;
using System;
using System.Net;
using System.Windows.Forms;

#endregion

namespace WakeOnLanForm
{
	public partial class MainForm : Form
	{
		#region 생성자/소멸자

		public MainForm()
		{
			this.InitializeComponent();
		}

		#endregion

		#region 버튼 이벤트

		/// <summary>
		/// Request 버튼이 클릭된 경우 발생하는 이벤트를 구현한다.
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void RequestButton_Click(object sender, EventArgs e)
		{
			IPAddress ipAddress = null;

			if (!IPAddress.TryParse(this.IpAddressTextBox.Text, out ipAddress))
			{
				MessageBox.Show("Not invalid IP address!");
			}

			if (this.BroadcastRadioButton.Checked)
			{
				WakeOnLan.WakeUp(MacAddressTextBox.Text);
			}
			else if (this.PublicIpRadioButton.Checked)
			{
				WakeOnLan.WakeUp(MacAddressTextBox.Text, ipAddress.ToString(), this.SubnetMaskTextBox.Text);
			}
			else if (this.PrivateIpRadioButton.Checked)
			{
				WakeOnLan.WakeUp(this.MacAddressTextBox.Text, ipAddress);
			}
		}

		#endregion

		#region 라디오 버튼 이벤트

		/// <summary>
		/// 라디오 버튼의 체크 상태가 변경됐을 때 발생하는 이벤트를 구현한다.
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void RadioButton_CheckedChanged(object sender, EventArgs e)
		{
			if (this.BroadcastRadioButton.Checked)
			{
				this.IpAddressTextBox.Text = IPAddress.Broadcast.ToString();
				this.IpAddressTextBox.ReadOnly = true;
				this.SubnetMaskTextBox.Text = string.Empty;
				this.SubnetMaskTextBox.Enabled = false;
			}
			else if (this.PublicIpRadioButton.Checked)
			{
				this.IpAddressTextBox.Text = string.Empty;
				this.IpAddressTextBox.ReadOnly = false;
				this.SubnetMaskTextBox.Text = string.Empty;
				this.SubnetMaskTextBox.Enabled = true;
			}
			else if (this.PrivateIpRadioButton.Checked)
			{
				this.IpAddressTextBox.Text = string.Empty;
				this.IpAddressTextBox.ReadOnly = false;
				this.SubnetMaskTextBox.Text = string.Empty;
				this.SubnetMaskTextBox.Enabled = false;
			}
		}

		#endregion
	}
}